<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // console.log(Promise);

        // 执行器函数（excutor函数） - 必须得传一个回调函数！
        let p = new Promise((resolve, reject) => {
            // console.log("同步回调-执行器函数");
            // resolve('ok')
            // reject('error')
            // setTimeout(() => {
            //     resolve('okk')
            // }, 1000);
            // resolve('成功返回值');

            // reject('失败')
            // resolve('ok');

            // a();
            // throw '失败信息';
            // throw new Error('错误值')
        })
        console.log(p);
        p.then(val => {
            console.log(val);
        })
        p.catch(rea => {
            console.log('catch', rea);
        })
        console.log('end');

        // console.log("end");
        // 1.  promise实例初始状态为 pending，初始值为undefined
        // 1.1 PromiseState 状态
        // 1.2 PromiseResult 结果值

        // 2. promise的excutor函数是同步回调


        // 3. promise的excutor函数内调用resolve函数后
        // 3.1 状态 pending => fulfilled（成功）
        // 3.2 结果值 => resolve内参数

        // 4. promise的excutor函数内调用reject函数后
        // 4.1 状态 pending => rejected（失败）
        // 4.2 结果值 => rejected内参数

        // 5. 状态只能修改一次
        // 5.1 以第一次修改状态为准

        // 6. excutor函数内有异常，那么状态被更改为rejected,值为异常信息
        // 6.1 出现异常，
        // 6.2 抛出错误对象
        // 6.3 抛出字符串
    </script>
</body>

</html>